هل يمكنني استخدام التعليقات داخل ملف JSON؟ إذا كان الأمر كذلك ، فكيف؟
1 2 التالى لا. JSON عبارة عن بيانات فقط ، وإذا قمت بتضمين تعليق ، فستكون بيانات أيضًا. يمكن أن يكون لديك عنصر بيانات محدد يسمى "_comment" (أو شيء ما) يجب أن تتجاهله التطبيقات التي تستخدم بيانات JSON. من الأفضل أن يكون لديك التعليق في العمليات التي تنشئ / تستقبل JSON ، حيث من المفترض أن تعرف ما هي بيانات JSON التي ستكون مقدمًا ، أو على الأقل هيكلها. ولكن إذا قررت: { "_comment": "نص التعليق هنا ..." ، "قائمة المصطلحات": { "العنوان": "مثال المسرد" ، "GlossDiv": { "العنوان": "S"، "GlossList": { "إدخال GlossEntry": { "المعرف": "SGML" ، "SortAs": "SGML" ، "GlossTerm": "لغة الترميز القياسية المعممة" ، "اختصار": "SGML" ، "مختصر": "ISO 8879: 1986" ، "GlossDef": { "الفقرة": "لغة ترميز وصفية تُستخدم لإنشاء لغات ترميز مثل DocBook."، "GlossSeeAlso": ["GML"، "XML"] } ، "GlossSee": "markup" } } } } } | لا ، تعليقات النموذج // ... أو / * ... * / غير مسموح بها في JSON. تعتمد هذه الإجابة على: https://www.json.org RFC 4627: Application / json Media Type لـ JavaScript Object Notation (JSON) RFC 8259 تنسيق تبادل بيانات JavaScript Object Notation (JSON) (يحل محل RFCs 4627 ، 7158 ، 7159) | قم بتضمين التعليقات إذا اخترت ؛ قم بتجريدها باستخدام جهاز تصغير قبل التحليل أو الإرسال. لقد أصدرت للتو JSON.minify () الذي يزيل التعليقات والمسافات البيضاء من كتلة JSON ويجعلها JSON صالحة يمكن تحليلها. لذلك ، يمكنك استخدامه مثل: JSON.parse (JSON.minify (my_str)) ؛ عندما قمت بنشره ، تلقيت رد فعل عنيفًا من الأشخاص الذين لا يتفقون حتى مع فكرة ذلك ، لذلك قررت أن أكتب منشور مدونة شاملًا حول سبب أهمية التعليقات في JSON. يتضمن هذا التعليق البارز من مبتكر JSON: لنفترض أنك تستخدم JSON للاحتفاظ بملفات التكوين التي ترغب في التعليق عليها. انطلق وأدخل جميع التعليقات التي تعجبك. ثم قم بتمريره عبر JSMin قبل تسليمه إلى المحلل اللغوي JSON. - دوجلاس كروكفورد ، 2012 نأمل أن يكون هذا مفيدًا لأولئك الذين يختلفون مع سبب فائدة JSON.minify (). | تمت إزالة التعليقات من JSON حسب التصميم. لقد أزلت التعليقات من JSON لأنني رأيت أن الأشخاص يستخدمونها لإجراء توجيهات التحليل ، وهي ممارسة كانت ستدمر إمكانية التشغيل البيني. أعلم أن قلة التعليقات تجعل بعض الناس حزينين ، لكن لا ينبغي ذلك. لنفترض أنك تستخدم JSON للاحتفاظ بملفات التكوين التي ترغب في التعليق عليها. انطلق وأدخل جميع التعليقات التي تعجبك. ثم قم بتمريره عبر JSMin قبل تسليمه إلى المحلل اللغوي لـ JSON. المصدر: بيان عام لدوجلاس كروكفورد على موقع G + | لا يدعم JSON التعليقات. كما أنه لم يُقصد أبدًا استخدامه لملفات التكوين حيث تكون التعليقات مطلوبة. Hjson هو تنسيق ملف تكوين للبشر. بناء جملة مريح ، أخطاء أقل ، مزيد من التعليقات. راجع hjson.github.io لمكتبات JavaScript و Java و Python و PHP و Rust و Go و Ruby و C ++ و C #. | إخلاء المسؤولية: الضمان الخاص بك باطل كما أشرنا ، فإن هذا الاختراق يستفيد من تنفيذ المواصفات. لن يفهم كل محللي JSON هذا النوع من JSON. سيتم اختناق موزعي الدفق على وجه الخصوص. إنه فضول مثير للاهتمام ، لكن يجب ألا تستخدمه في أي شيء على الإطلاق. أدناه هو الجواب الأصلي. لقد اكتشفت اختراقًا بسيطًا يسمح لك بوضع تعليقات في ملف JSON لن يؤثر على التحليل أو يغير البيانات التي يتم تمثيلها بأي شكل من الأشكال. يبدو أنه عند إعلان كائن حرفيًا ، يمكنك تحديد قيمتين بنفس المفتاح ، والأخيرة لها الأسبقية. صدق أو لا تصدق ، اتضح أن موزعي JSON يعملون بنفس الطريقة. لذلك يمكننا استخدام هذا لإنشاء تعليقات في JSON المصدر والتي لن تكون موجودة في تمثيل كائن محلل. ({أ: 1 ، أ: 2}) ؛ // => الكائن {a: 2} Object.keys (JSON.parse ('{"a": 1، "a": 2}')). length؛ // => 1 إذا طبقنا هذه التقنية ، فقد يبدو ملف JSON الذي تم التعليق عليه بهذا الشكل: { "api_host": "اسم مضيف خادم API الخاص بك. يمكنك أيضًا تحديد المنفذ."، "api_host": "hodorhodor.com"، "retry_interval": "الفاصل الزمني بالثواني بين إعادة محاولة استدعاءات API الفاشلة" ، "retry_interval": 10 ، "auth_token": "رمز المصادقة. متوفر في لوحة تحكم المطور الخاصة بك ضمن" الإعدادات "، "auth_token": "5ad0eb93697215bc0d48a7b69aa6fb8b" ، "favour_numbers": "مصفوفة تحتوي على أرقامي المفضلة طوال الوقت" ، "favour_numbers": [19، 13، 53] } الكود أعلاه صالح JSON. إذا قمت بتحليلها ، فستحصل على كائن مثل هذا: { "api_host": "hodorhodor.com"، "retry_interval": 10 ، "auth_token": "5ad0eb93697215bc0d48a7b69aa6fb8b" ، "favour_numbers": [19،13،53] } مما يعني عدم وجود أثر للتعليقات ، ولن يكون لها آثار جانبية غريبة. قرصنة سعيدة! | فكر في استخدام YAML. إنها تقريبًا مجموعة شاملة من JSON (تقريبًا جميع JSON الصالحة صالحة YAML) وتسمح بالتعليقات. | لا يمكنك. على الأقل هذه هي تجربتي من نظرة سريعة على json.org. JSON له بناء الجملة الخاص بهتصور على تلك الصفحة. ليس هناك أي ملاحظة حول التعليقات. | التعليقات ليست معيارًا رسميًا ، على الرغم من أن بعض المحللين يدعمون التعليقات بأسلوب C ++. واحد الذي أستخدمه هو JsonCpp. في الأمثلة يوجد هذا: // خيارات الإعداد { // الترميز الافتراضي للنص "ترميز": "UTF-8" ، // تم تحميل المكونات الإضافية عند بدء التشغيل "المكونات الإضافية": [ "بيثون"، "c ++"، "روبي" ] ، // حجم المسافة البادئة لعلامة التبويب "مسافة بادئة": {"length": 3، "use_space": true} } لا يتحقق jsonlint من هذا. لذا فإن التعليقات هي امتداد محدد للمحلل وليست قياسية. محلل آخر هو JSON5. بديل لـ JSON TOML. بديل آخر هو jsonc. يحتوي الإصدار الأخير من nlohmann / json على دعم اختياري لتجاهل التعليقات عند التحليل. | يجب عليك كتابة مخطط JSON بدلاً من ذلك. يعتبر مخطط JSON حاليًا أحد مواصفات مسودة الإنترنت المقترحة. إلى جانب التوثيق ، يمكن أيضًا استخدام المخطط للتحقق من صحة بيانات JSON الخاصة بك. مثال: { "الوصف": "شخص" ، "type": "object"، "الخصائص": { "اسم": { "النوع": "سلسلة" } ، "عمر": { "النوع": "عدد صحيح" ، "الحد الأقصى": 125 } } } يمكنك تقديم وثائق باستخدام سمة مخطط الوصف. | إذا كنت تستخدم Jackson كمحلل JSON ، فهذه هي الطريقة التي يمكنك من خلالها السماح بالتعليقات: مخطط ObjectMapper = جديد ObjectMapper (). تكوين (Feature.ALLOW_COMMENTS ، صحيح) ؛ ثم يمكنك الحصول على تعليقات مثل هذا: { المفتاح: "القيمة" // تعليق } ويمكنك أيضًا الحصول على تعليقات تبدأ بـ # من خلال تحديد: mapper.configure (Feature.ALLOW_YAML_COMMENTS ، صحيح) ؛ لكن بشكل عام (كما تمت الإجابة عليه من قبل) لا تسمح المواصفات بالتعليقات. | هذا ما وجدته في وثائق Google Firebase التي تسمح لك بوضع تعليقات في JSON: { "//": "ستستخدم بعض المتصفحات هذا لتمكين دفع الإشعارات."، "//": "هذا هو نفسه لكل المشاريع ، هذا ليس معرّف مرسل مشروعك" ، "gcm_sender_id": "1234567890" } | لا. اعتاد JSON على دعم التعليقات ، لكن تمت إساءة استخدامها وإزالتها من المعيار. من مبتكر JSON: لقد أزلت التعليقات من JSON لأنني رأيت أن الأشخاص يستخدمونها لإجراء توجيهات التحليل ، وهي ممارسة كانت ستدمر إمكانية التشغيل البيني. أعلم أن قلة التعليقات تجعل بعض الناس حزينين ، لكن لا ينبغي ذلك. - دوجلاس كروكفورد ، 2012 موقع JSON الرسمي موجود في JSON.org. تم تعريف JSON كمعيار بواسطة ECMA International. هناك دائمًا عملية التماس لمراجعة المعايير. من غير المحتمل أن تتم إضافة التعليقات التوضيحية إلى معيار JSON لعدة أسباب. JSON حسب التصميم هو بديل سهل الهندسة العكسية (تحليل بشري) لـ XML. يتم تبسيطها حتى لدرجة أن التعليقات التوضيحية غير ضرورية. إنها ليست حتى لغة ترميزية. الهدف هو الاستقرار وإمكانية التشغيل البيني. يمكن لأي شخص يفهم علاقة "has-a" لاتجاه الكائن أن يفهم أي بنية JSON - وهذا هو بيت القصيد. إنه مجرد رسم بياني لا دوري موجه (DAG) به علامات عقدة (أزواج مفتاح / قيمة) ، وهو عبارة عن بنية بيانات شبه عالمية. قد يكون هذا التعليق التوضيحي الوحيد المطلوب "// هذه علامات DAG". يمكن أن تكون أسماء المفاتيح مفيدة بقدر ما هو مطلوب ، مما يسمح بالحجم الدلالي التعسفي. يمكن لأي نظام أساسي تحليل JSON ببضعة أسطر من التعليمات البرمجية. تتطلب XML مكتبات OO معقدة غير قابلة للتطبيق على العديد من الأنظمة الأساسية. التعليقات التوضيحية ستجعل JSON أقل قابلية للتشغيل البيني. ببساطة لا يوجد شيء آخر تضيفه ، إلا إذا كان ما تحتاجه حقًا هو لغة ترميز (XML) ، ولا تهتم إذا كان من السهل تحليل بياناتك المستمرة. ولكن كما لاحظ منشئ JSON أيضًا ، كان هناك دائمًا دعم خط أنابيب JS للتعليقات: انطلق وأدخل جميع التعليقات التي تعجبك. ثم قم بتمريره عبر JSMin قبل تسليمه إلى المحلل اللغوي لـ JSON. - دوجلاس كروكفورد ، 2012 | إذا كان ملفك النصي ، وهو سلسلة JSON ، سيقرأه بعض البرامج ، فما مدى صعوبة إزالة تعليقات نمط C أو C ++ قبل استخدامه؟ الجواب: ستكون بطانة واحدة. إذا قمت بذلك ، فيمكن استخدام ملفات JSON كملفات تكوين. | إذا كنت تستخدم مكتبة Newtonsoft.Json مع ASP.NET لقراءة / إلغاء التسلسل ، يمكنك استخدام التعليقات في محتوى JSON: // "الاسم": "سلسلة" // "id": int أو /* هذا ال مثال على التعليق * / ملاحظة: التعليقات أحادية السطر مدعومة فقط مع أكثر من 6 إصدارات من Newtonsoft Json. ملاحظة إضافية للأشخاص الذين لا يستطيعون التفكير خارج الصندوق: أستخدم تنسيق JSON للإعدادات الأساسية في تطبيق ويب ASP.NET قمت بإنشائه. قرأت الملف ، وقمت بتحويله إلى كائن الإعدادات بمكتبة Newtonsoft واستخدمه عند الضرورة. أفضل كتابة التعليقات حول كل إعداد فردي في ملف JSON نفسه ، ولا أهتم حقًا بسلامة تنسيق JSON طالما أن المكتبة التي أستخدمها متوافقة معها. أعتقد أن هذه طريقة "أسهل في الاستخدام / الفهم" من إنشاء ملف "settings.README" منفصل وشرح الإعدادات الموجودة فيه. إذا كانت لديك مشكلة في هذا النوع من الاستخدام ؛ آسف ، لقد خرج الجني من المصباح. سيجد الناس استخدامات أخرى لـبتنسيق JSON ، ولا يمكنك فعل أي شيء حيال ذلك. | الفكرة وراء JSON هي توفير تبادل بسيط للبيانات بين التطبيقات. هذه هي عادة على شبكة الإنترنت واللغة هي JavaScript. إنه لا يسمح حقًا بالتعليقات على هذا النحو ، ومع ذلك ، فإن تمرير تعليق كأحد أزواج الاسم / القيمة في البيانات سيعمل بالتأكيد ، على الرغم من أنه من الواضح أن هذه البيانات يجب أن يتم تجاهلها أو التعامل معها على وجه التحديد من خلال رمز التحليل. بعد كل ما قيل ، ليس المقصود أن يحتوي ملف JSON على تعليقات بالمعنى التقليدي. يجب أن تكون البيانات فقط. ألق نظرة على موقع JSON لمزيد من التفاصيل. | لا يدعم JSON التعليقات أصلاً ، ولكن يمكنك إنشاء وحدة فك التشفير الخاصة بك أو على الأقل المعالج المسبق لإزالة التعليقات ، وهذا جيد تمامًا (طالما أنك تتجاهل التعليقات فقط ولا تستخدمها لتوجيه كيفية معالجة تطبيقك لبيانات JSON ). ليس لدى JSON تعليقات. يجب ألا يخرج برنامج تشفير JSON تعليقات. قد تقبل وحدة فك ترميز JSON التعليقات وتتجاهلها. لا ينبغي أبدًا استخدام التعليقات لنقل أي شيء ذي معنى. هذا هو ما هو JSON. Cf: دوجلاس كروكفورد ، مؤلف JSON spec. | أنا فقط واجهت هذا لملفات التكوين. لا أرغب في استخدام تنسيق XML (مطول ، أو بياني ، أو قبيح ، أو يصعب قراءته) ، أو تنسيق "ini" (بدون تسلسل هرمي ، ولا يوجد معيار حقيقي ، وما إلى ذلك) أو تنسيق "خصائص" Java (مثل .ini). يمكن لـ JSON أن يفعل كل ما في وسعه ، لكنه أقل تفصيلاً وأكثر قابلية للقراءة من قبل الإنسان - والمحللون سهلون ومتواجدون في كل مكان في العديد من اللغات. إنها مجرد شجرة بيانات. لكن التعليقات خارج النطاق ضرورية غالبًا لتوثيق التكوينات "الافتراضية" وما شابه. يجب ألا تكون التكوينات "مستندات كاملة" أبدًا ، ولكن يجب أن تكون أشجار البيانات المحفوظة التي يمكن للبشر قراءتها عند الحاجة. أعتقد أنه يمكن للمرء استخدام "#": "تعليق" ، لـ JSON "صالح". | يعتمد ذلك على مكتبة JSON الخاصة بك. يدعم Json.NET التعليقات على غرار JavaScript ، / * commment * /. راجع سؤال Stack Overflow آخر. | يعتبر JSON ذا معنى كبير لملفات التكوين والاستخدام المحلي الآخر لأنه موجود في كل مكان ولأنه أبسط بكثير من XML. إذا كان لدى الأشخاص أسباب قوية تمنع وجود تعليقات في JSON عند توصيل البيانات (سواء كانت صالحة أم لا) ، فمن الممكن تقسيم JSON إلى قسمين: JSON-COM: JSON على السلك ، أو القواعد التي تنطبق عند توصيل بيانات JSON. JSON-DOC: مستند JSON أو JSON في ملفات أو محليًا. القواعد التي تحدد مستند JSON صالحًا. سيسمح JSON-DOC بالتعليقات ، وقد توجد اختلافات طفيفة أخرى مثل التعامل مع المسافات البيضاء. يمكن للمحللين التحويل بسهولة من أحد المواصفات إلى الأخرى. فيما يتعلق بالتعليق الذي أدلى به دوغلاس كروكفورد بشأن هذه القضايا (المشار إليه بواسطةArtur Czajka) لنفترض أنك تستخدم JSON للاحتفاظ بملفات التكوين التي ترغب في التعليق عليها. انطلق وأدخل جميع التعليقات التي تعجبك. ثم قم بتمريره عبر JSMin قبل تسليمه إلى المحلل اللغوي لـ JSON. نحن نتحدث عن مشكلة عامة في ملف التكوين (عبر اللغة / النظام الأساسي) ، وهو يجيب باستخدام أداة مساعدة خاصة بـ JS! تأكد من إمكانية تنفيذ تصغير محدد بتنسيق JSON بأي لغة ، لكن قم بتوحيد هذا بحيث يصبح منتشرًا في كل مكان عبر المحللين في جميع اللغات والمنصات حتى يتوقف الناس عن إضاعة وقتهم في افتقارهم إلى الميزة لأن لديهم حالات استخدام جيدة لها ، والبحث عن المشكلة في المنتديات عبر الإنترنت ، وإخبار الناس بأنها فكرة سيئة أو اقتراح أنه من السهل تنفيذ إزالة التعليقات من الملفات النصية. المشكلة الأخرى هي إمكانية التشغيل البيني. لنفترض أن لديك مكتبة أو واجهة برمجة تطبيقات أو أي نوع من الأنظمة الفرعية التي تحتوي على بعض ملفات التكوين أو البيانات المرتبطة بها. وهذا النظام الفرعي ليتم الوصول إليها من لغات مختلفة. ثم هل تذهب لإخبار الناس: بالمناسبة لا تنس إزالة التعليقات من ملفات JSON قبل تمريرها إلى المحلل اللغوي! | إذا كنت تستخدم JSON5 ، فيمكنك تضمين التعليقات. JSON5 هو امتداد مقترح لـ JSON يهدف إلى تسهيل الكتابة اليدوية والاحتفاظ بها على البشر. يقوم بذلك عن طريق إضافة بعض ميزات بناء الجملة مباشرة من ECMAScript 5. | تتيح لك مجموعة أدوات Dojo Toolkit JavaScript (على الأقل بدءًا من الإصدار 1.4) ، تضمين التعليقات في JSON الخاص بك. يمكن أن تكون التعليقات بتنسيق / * * /. يستهلك Dojo Toolkit JSON عبر استدعاء dojo.xhrGet (). قد تعمل مجموعات أدوات JavaScript الأخرى بشكل مشابه. يمكن أن يكون هذا مفيدًا عند تجربة هياكل البيانات البديلة (أو حتى قوائم البيانات) قبل تحديد خيار نهائي. | JSON ليس بروتوكولًا مؤطرًا. إنه تنسيق لغة مجاني. لذلك لم يتم تعريف تنسيق التعليق لـ JSON. كما اقترح العديد من الأشخاص ، هناك بعض الحيل ، على سبيل المثال ، تكرار المفاتيح أو تعليق مفتاح معين يمكنك استخدامه. الأمر متروك لك. | يمكن أن يكون لديك تعليقات في JSONP ، ولكن ليس في JSON خالص. لقد أمضيت ساعة للتو في محاولة جعل برنامجي يعمل مع هذا المثال من Highcharts: http://www.highcharts.com/samples/data/jsonp.php؟filename=aapl-c.json&callback=؟ إذا اتبعت الرابط ، فسترى ؟ (/ * AAPLبيانات OHLC التاريخية من Google Finance API * / [ / * مايو 2006 * / [1147651200000،67.79] ، [1147737600000،64.98] ، ... [1368057600000،456.77] ، [1368144000000،452.97] ]) ؛ نظرًا لأن لدي ملفًا مشابهًا في مجلدي المحلي ، لم تكن هناك مشكلات في سياسة نفس الأصل ، لذلك قررت استخدام JSON الخالص ... وبالطبع ، فشل $ .getJSON بصمت بسبب التعليقات. في النهاية ، أرسلت للتو طلب HTTP يدويًا إلى العنوان أعلاه وأدركت أن نوع المحتوى كان نصًا / جافا سكريبت لأن JSONP ، حسنًا ، تُرجع JavaScript خالصًا. في هذه الحالة التعليقات مسموح بها. لكن تطبيقي أعاد تطبيق نوع المحتوى / json ، لذلك اضطررت إلى إزالة التعليقات. | هذا هو سؤال "هل يمكنك". وهنا إجابة "نعم". لا ، لا يجب استخدام عناصر مكررة لحشو بيانات القناة الجانبية في ترميز JSON. (راجع "يجب أن تكون الأسماء الموجودة داخل كائن فريدة" في RFC). ونعم ، يمكنك إدراج تعليقات حول JSON ، والتي يمكنك تحليلها. ولكن إذا كنت تريد طريقة لإدخال بيانات القناة الجانبية التعسفية واستخراجها إلى JSON صالح ، فإليك إجابة. نحن نستفيد من التمثيل غير الفريد للبيانات في ترميز JSON. هذا مسموح به * في القسم الثاني من RFC ضمن "يُسمح بالمسافة البيضاء قبل أو بعد أي من الأحرف الهيكلية الستة". * ينص RFC فقط على أن "المسافة البيضاء مسموح بها قبل أو بعد أي من الأحرف الهيكلية الستة" ، دون ذكر السلاسل والأرقام و "false" و "true" و "null". يتم تجاهل هذا الإغفال في كافة عمليات التنفيذ. أولاً ، جعل JSON أساسيًا عن طريق تصغيره: $ jsonMin = json_encode (json_decode ($ json)) ؛ ثم قم بترميز تعليقك في ثنائي: عرافة دولار = تفريغ ('H *'، تعليق بالدولار) ؛ $ commentBinary = base_convert ($ hex [1]، 16، 2)؛ ثم steg الخاص بك الثنائي: $ steg = str_replace ('0'، '، $ commentBinary) ؛ $ steg = str_replace ('1'، "\ t"، $ steg)؛ ها هو ناتجك: $ jsonWithComment = $ steg. $ jsonMin؛ | إخلاء المسئولية: هذا سخيف توجد بالفعل طريقة لإضافة التعليقات والبقاء ضمن المواصفات (لا حاجة إلى محلل إضافي). لن ينتج عن ذلك تعليقات يمكن للبشر قراءتها دون أي نوع من التحليل. يمكنك إساءة استخدام ما يلي: يُسمح بمسافات بيضاء غير مهمة قبل أي رمز مميز أو بعده. المسافة البيضاء هي أي تسلسل لواحد أو أكثر من الكود التالي النقاط: جدولة الأحرف (U + 0009) ، تغذية السطر (U + 000A) ، النقل العودة (U + 000D) ، والمسافة (U + 0020). بطريقة مخترقة ، يمكنك إساءة استخدام هذا لإضافة تعليق. على سبيل المثال: ابدأ وتعليقك بعلامة تبويب. قم بتشفير التعليق في base3 واستخدم أحرف المسافات البيضاء الأخرى لتمثيلها. على سبيل المثال. 010212 010202 011000 011000 011010 001012 010122 010121 011021 010202 001012 011022 010212 011020 010202 010202 (مرحبًا بالقاعدة الثالثة في ASCII) ولكن بدلاً من 0 استخدم مساحة ، لتغذية سطر واحد و 2 استخدم حرف إرجاع. سيؤدي هذا إلى ترك الكثير من المسافات البيضاء غير القابلة للقراءة (إلا إذا قمت بإنشاء مكون إضافي لـ IDE لتشفير / فك تشفيره على الفور) لم أجرب هذا أبدًا ، لأسباب واضحة ولا يجب عليك أنت أيضًا. | لا يسمح JSON بالتعليقات ، في حد ذاته. المنطق أحمق تمامًا ، لأنه يمكنك استخدام JSON نفسه لإنشاء تعليقات ، مما يلغي المنطق تمامًا ، ويحمل مساحة البيانات المحلل بدون سبب وجيه على الإطلاق لنفس النتيجة والمشكلات المحتملة تمامًا ، مثل: ملف مع التعليقات. إذا حاولت وضع التعليقات (باستخدام // أو / * * / أو # على سبيل المثال) ، فسيفشل بعض المحللين لأن هذا ليس تمامًا ضمن مواصفات JSON. لذلك يجب ألا تفعل ذلك أبدًا. هنا ، على سبيل المثال ، حيث قام نظام معالجة الصور الخاص بي بحفظ تدوينات الصور وبعض المعلومات الأساسية المنسقة (التعليق) المتعلقة بها (في الأسفل): { "الرموز": [ { "anchorX": 333 ، "مرساة": 265 ، "areaMode": "Ellipse"، "مدى س": 356 ، "مدى Y": 294 ، "العتامة": 0.5 ، "نص": "منطقة بيضاوية في الأعلى" ، "textX": 333 ، "textY": 265 ، "العنوان": "الملاحظة 1" } ، { "anchorX": 87، "مرساة": 385 ، "areaMode": "مستطيل"، "مدى س": 109 ، "الامتداد": 412 ، "العتامة": 0.5 ، "نص": "منطقة مستقيمة \ غير أسفل" ، "textX": 98 ، "textY": 385 ، "العنوان": "الملاحظة 2" } ، { "anchorX": 69 ، "مرساة": 104 ، "areaMode": "المضلع"، "مدى س": 102 ، "مدى ص": 136 ، "العتامة": 0.5 ، "قائمة النقاط": [ { "أنا": 0 ، "×": 83 ، "ذ": 104 } ، { "أنا": 1 ، "×": 69 ، "ص": 136 } ، { "أنا": 2 ، "×": 102 ، "ص": 132 } ، { "أنا": 3 ، "×": 83 ، "ص": 104 } ] ، "نص": "مضلع بسيط" ، "textX": 85 ، "textY": 104 ، "العنوان": "الملاحظة 3" } ] ، "imageXW": 512 ، "imageYW": 512 ، "اسم الصورة": "lena_std.ato" ، "tinyDocs": { "c01": "بيانات تدوين صورة JSON:"، "c02": "-------------------------" ، "c03": ""، "c04": "تحتوي هذه البيانات على رموز الصورة والمناطق ذات الصلة" ، "c05": "معلومات التحديد التي توفر وسيلة لـ" ، "c06": "معرض الصور لعرض الرموز البيضاوية،"، "c07": "مؤشرات منطقة مستطيلة أو متعددة الأضلاع أو مرفوعة" ، "c08": "فوق صورة معروضة لزائر المعرض."، "c09": ""، "c10": "مواضع X و Y كلها في الصورةالفراغ. الصورة"، "c11": "يتم تقديم الدقة على أنها imageXW و imageYW ، والتي" ، "c12": "تستخدمه لتوسيع نطاق مناطق الترميز وفقًا لها" ، "c13": "مواقع وأحجام عرضك للصورة" ، "c14": "بغض النظر عن المقياس."، "c15": ""، "c16": "بالنسبة إلى القطع الناقص ، المرساة هي مركز القطع الناقص ،" ، "c17": "والنطاقات هي نصف قطر X و Y على التوالي."، "c18": ""، "c19": "بالنسبة للمستطيلات ، يكون المرساة أعلى اليسار و" ، "c20": "النطاقات هي أسفل اليمين."، "c21": ""، "c22": "لأوضاع المنطقة الحرة والمضلع ، قائمة النقاط" ، "c23": "يحتوي على سلسلة من نقاط XY المرقمة. إذا كانت المنطقة" ، "c24": "مغلق ، النقطة الأخيرة ستكون هي نفسها" ، "c25": "أولاً ، كل ما عليك أن تهتم به هو الرسم" ، "c26": "الأسطر بين النقاط في القائمة. المرساة والمدى"، "c27": "يتم تعيينها في أعلى اليسار وأسفل يمين" المشار إليه ، "c28": "المنطقة ، ويمكن استخدامها كمستطيل مبسط" ، "c29": "اكتشاف موضع تمرير الماوس فوق هذه الأنواع" ، "c30": "المناطق."، "c31": ""، "c32": "توفر مواضع النص x والوضع النصي تحديد الموضع الأساسي" ، "c33": "معلومات لمساعدتك في تحديد موقع معلومات النص" ، "c34": "في موقع معقول مرتبط بالمنطقة" ، "c35": "إشارة"، "c36": ""، "c37": "العتامة هي قيمة بين 0 و 1 ، حيث يمثل .5" ، "c38": "خلفية معتمة بنسبة 50٪ و 1.0 تمثل تعتيمًا بالكامل" ، "c39": "الخلفية. التوصية هي أن يتم رسم المناطق" ، "c40": "فقط إذا قام المستخدم بتمرير المؤشر فوق الصورة ،" ، "c41": "وأن يتم رسم النص المرتبط بالمناطق" ، "c42": "فقط إذا قام المستخدم بتمرير المؤشر فوق المشار إليه" ، "c43": "المنطقة". } } | نحن نستخدم تعليقات strip-json لمشروعنا. يدعم شيئًا مثل: / * * وصف * / { // قوس قزح "يونيكورن": / * ❤ * / "كعكة" } ما عليك سوى تثبيت npm - حفظ تعليقات strip-json لتثبيتها واستخدامها مثل: var strip_json_comments = يتطلب ('strip-json-comments') var json = '{/ * rainbows * / "unicorn": "cake"}'؛ JSON.parse (strip_json_comments (json)) ؛ // => {يونيكورن: 'كعكة'} | في حالتي ، أحتاج إلى استخدام التعليقات لأغراض التصحيح قبل إخراج بنية JSON مباشرةً. لذلك قررت استخدام معلومات تصحيح الأخطاء في رأس HTTP لتجنب كسر العميل: header ("My-Json-Comment: نعم ، أعلم أنه حل بديل ؛-)") ؛ | لقص عنصر JSON إلى أجزاء ، أضف سطور "تعليق وهمي": { "##############################": "Part1"، "data1": "value1"، "data2": "value2"، "#############################" : "الجزء 2"، "data4": "value3"، "data3": "value4" } | 1 2 التالى سؤال نشط للغاية. اكسب 10 سمعة للإجابة على هذا السؤال. تساعد متطلبات السمعة في حماية هذا السؤال من البريد العشوائي ونشاط عدم الإجابة. ليس الجواب الذي تبحث عنه؟ تصفح الأسئلة الأخرى الموسومة بتعليقات json أو اطرح سؤالك الخاص.